BartSi, очень странно.
Нашёл проблему. В редакторе ландшафта нужно выбрать Camera Palette (там где юниты, декорации и прочее) выбрать первую строчку (камера без имени) и удалить. Тогда проблема решится. Сбросил триггеры и удалил камеру.
Ошибка из-за того, что у камеры почему-то пустое имя. Из-за этого её переменная оканчивается на _, что нельзя в JASS.
Можно попробовать достать актуальный TriggerData.txt, дополнить его UMSWE триггерами и скормить редактору включив локальные файлы. Но я не гарантирую работоспособность этого метода.
Также есть небольшой шанс что в рефорже будет способ подсунуть редактору TriggerData.txt без локальных файлов, но сильно на это рассчитывать не стоит.
Razor_dex, сконвертируй карту, потом открой в стандартном 1.26 редакторе, удали комментарий Рок Лии\Otome Renge
Для гуи-гигантов это типичная болячка, просто битый комментарий который содержит в себе информацию о нескольких действиях, считай как обычный триггер только отображается как комментарий
Возникает такое скорее всего при копировании
P.S. странно что редакторы до 1.31 не обращают внимания на такой баг
Возможно проблема в способностях или строках, близзарды че только не сломали и нужно ждать стабильной версии игры где вылечат 99% глюков, багов и завезут максимальную совместимость со старыми картами.
lll_Kirito_lll, тут задают вопросы касательно того что делается в ве
в данном случае это твой проект и в нём ошибка
а так как телепатов тут нету то нужен проект
в общем либо карту либо клоз тему
надоели уже
ведёте сверхсекретные разработки и просите исправить ваши ошибки не трогая ваши карты
как мы это должны сделать?
магией?
или помолится богу чтобы он исправил
или ему тоже нельзя к вашему проекту прикасаться?
ставлю 100$ что ничего круче нубских триггеров там нету
поправка
учитывая предыдущие вопросы и комментарии афтара ставлю 200$
локальный - на машине конкретного юзера, не путать с mui/mpi (муи - действует для каждого юнита, mpi - для каждого игрока)
все баффы будут действовать, хоть их там будет штук 100 (хотя я столько еще не вешал)
тоже самое касается и тригго баффов, которые легко реализовать с помощью запрещенного спеллбука и как сказал quq_CCCP - таймера
даже если бафф не отображается, но его точно вешали на юнита - система его найдет
а если ты пытаешься сделать бафф Palus Knight из Lineage II - поиграйся с отрицательным по урону берсерком (где кстати есть и скорость бега), или со спеллом свитка скорости
хотя легче будет просто обложить юнита блокираторами прохода на время действия, потому что полную остановку сделать без костылей не удастся
quq_CCCP, т.к. не триггерно эффект накладывается то скорее всего проблема не в дровах LainMikoroso, кинь j файл карты (естественно с убранным удалением эффекта)
существует вероятность что в карте где то есть дефайны либо криво компилится
Некоторые вещи сделаны хардкодно, у огненого столба скорее всего тоже дебафф и его параметры не меняются, или меняются только у оригинала.
Близзарды много где так схалтурили, у аватара бафф нельзя настроить, хоть ты лопни, оно прописано в коде брать бафф 'BHav' и точка. У техники в баффе шипы неруба, и их тоже не убрать, только dummy.mdx подсунуть на их место.
Яд стрелы, стакаются (в основном с разным баффом) не снимаются спеллами типа - рассеять чары.
Не деспелятся баффы всех аур, бафф ANdo, а так же бафф Afrz.
Локальные переменные нельзя использовать в GUI'шных "if then else", карта просто не запустится Т.к если GUI'шные "if then else" перевести в jass, то будет функция с действиями триггера, а чуть выше функция с условиями этого же "if then else". А в этом и прикол локальных переменных, их можно использовать только в пределах функции в которой они были вызваны (созданы).
И лучше начни писать на jass, он легкий, хоть и кажется сложным после GUI
К примеру такие задачи на GUI которые буквально голову ломают - на jass делаются достаточно легко и быстро
дабы избежать конфликтов с многократными использованием
это будет проблематично на GUI
Поэтому лучше не парить голову этим, а почитать эти материалы:
Хэш таблица. Удобна и практична. Кстати, не забудь создать глобальную переменную Hash, типа хэш-таблица и при инициализации карты инициализировать Hash, иначе не будет работать.
function Trig_HealImp_Timer takes nothing returns nothing
local timer t = GetExpiredTimer()
local integer hid = GetHandleId(t)
local unit caster = LoadUnitHandle(udg_Hash, hid, 0) //Наш юнит хранится по ссылке "0", вытаскиваем его, чтобы с ним работать
local integer i = LoadInteger(udg_Hash, hid, 1) //Счетчик
local real hp1 = GetUnitState(caster, ConvertUnitState(0)) //текущее здоровье
local real hp = GetUnitState(caster, ConvertUnitState(1)) //максимальное здоровье
local real chp = (hp/100)*0.8 //значение, на которое лечим юнит
if i != 50 then //Срабатывание таймера 0,1. Так как длительность лечения составляет 5 сек, то таймер должен сработать 50 раз. Кстати, исходя из этого, высчитываем chp.
set i = i + 1 //Увеличиваем значение счетчика
call SetUnitState(caster, ConvertUnitState(0), hp1+chp) //лечим юнит
call SaveInteger(udg_Hash, hid, 1, i) //Сохраняем новое значение счетчика. Если этого не будет, счетчик вечно будет равен 0.
else //Когда счетчик равен 50, мы останавливаем таймер и чистим Хэш
call PauseTimer(t)
call DestroyTimer(t)
call FlushChildHashtable(udg_Hash, hid)
endif
set t=null
set caster = null
endfunction
function Trig_HealImp_Actions takes nothing returns nothing
local timer t = CreateTimer() //Таймер
local integer hid = GetHandleId(t) ) //Id таймера
local unit caster =GetTriggerUnit() //юнит, который мы будем лечить, по факту тот, кто активировал способность
call SaveUnitHandle(udg_Hash, hid, 0, caster) //сохраняем в Хэш юнит caster с ссылкой "0".
call SaveInteger(udg_Hash, hid, 1, 0) //сохраняем значение 0 с ссылкой "1". Это будет счетчик длительности лечения.
call TimerStart(t, 0.1, true, function Trig_HealImp_Timer) //запускаем таймер.
set t = null
set caster = null
endfunction
всегда по ссылке для handle-типов, всегда по значению для остальных
изменить это невозможно
никак, использовать глобалку, куда сохранять локалку перед нулением
нет, нету
ну или аналоги всего этого есть в продвинутых редакторах, не знаю, пусть те, кто ими пользуются, скажут
если нужно чтобы здание обязательно было зданием, то можно делать здание с нулевой моделью, потом сделать даммика-боевую еденицу со скоростью ходьбы выше 0 с моделью нашего здания и способностью москиты, так что его нельзя будет выбрать, и создавать наш даммик на месте здания без модели, так как даммика можно вращать, то можно иммитировать разворот здания.
If you know what i mean.
если нужно чтобы здание обязательно было зданием, то можно делать здание с нулевой моделью, потом сделать даммика-боевую еденицу со скоростью ходьбы выше 0 с моделью нашего здания и способностью москиты, так что его нельзя будет выбрать, и создавать наш даммик на месте здания без модели, так как даммика можно вращать, то можно иммитировать разворот здания.
If you know what i mean.
Black Soul, это потому, что по памяти пример указывал и кое-что пропустил в условии, в итоге юнит добавлялся в группу и сразу же удалялся. Есть в JNGP событие unit is hidden, но по факту оно не работает, как мне казалось, потому реально придётся периодически проверять группу, что всё равно понадобится в итоге, чтобы охапку дерева отлавливать но это будет уже не столь точный способ. Проверку на скрытость юнита нужно проводить, когда отдали приказ на рудник и занесли в группу, если отдадим любой другой приказ, то из группы удаляем, следовательно, раз юнит в группе и скрыт, то он точно в руднике и выйдет с мешком. Всего три триггера, у тебя больше, это и имел ввиду под перегруженностью.
Сейчас перечитал, как-то вообще непонятно обосновал. Короче: - Не работало потому, что ещё условия в примере не хватало. Но даже вместе с нужными условиями юнита с мешком не отловить, если отправить в другое место через shift; - Сделал вариант, чтобы точно отлавливало юнита с мешком золота; - Для дерева столь же точно отловить вряд ли получится, но надо попытаться, на что у меня сейчас нет времени.
Скрины триггеров для тех, кому интересно:
Надо ещё будет придумать как быть, когда юнит становится ополченцем или несёт последний мешок из рудника, так как в обоих случаях юнит продолжает числиться с мешком.
Было, рекомендую пройтись по списку. запустив игру:
Без триггеров
Без моделей
Без текстур
И попытаться более чётко получить данную проблему, тестов придётся сделать много
Потому что там не бж функция, а нативка. В натвиной функции положение отображения текста задается 2-мя координатами x и y.
Нижний левый угол 0;0. Верхний правый - 1.5;1.5 (точно не помню цифру, но не больше 2-х)
Экспериментируй.
На скрине нет нужных полей, где пишутся описания.
Такое бывает, если стоит галочка "Характеристики - Относится к предмету", потому что скиллам предметов не нужны описания.
каждый раз когда ты ссылаешься на AllPlayers, эта функция возвращает объект (группу игроков) из скрытой переменной bj_FORCE_ALL_PLAYERS.
ты заносишь этот объект в переменную и удаляешь его, и больше не можешь использовать AllPlayers
поэтому после этого текст не выводится когда ты пытаешься его выводить для всех игроков (а эту группу ты удалил хоть и поместил ее перед этим в свою переменную) как на скрине из твоей карты в моем посте выше.
Триггерно нет необходимости делать. Берешь в РО любую ауру на увеличение скорости перемещения и ставишь отрицательное значение этой скорости через нажатие клавиш [Shift+Enter]
100% будет работать, если заменить стандартные текстуры деревьев, а в самих моделях вместо пути к текстуре указать соответствующий Replaceable ID. (Если порченные версии тоже заменить под новую модель, то ещё и порча будет корректно работать =)
Какой путь к текстуре в самой модели? В оригинальном Warcraft'е это "Textures\Meatwagon.blp".
Если у тебя путь "Textures\trupovozka_by_autorname.blp", то в Импорте так и пиши: "Textures\trupovozka_by_autorname.blp".
War3Modeleditor через просмотр MPQ архивов по папкам ищеш путь к тайлсету записываеш себе в блокнотике и потом пишеш такой же путь у своей текстуры в редакторе.
Вообще по идее диалоговое окно как бы фрейм, и он не должно дэсинхронизироваться от такого
Но всё можно ожидать от патча 1.26, но десинк возможен, если я токмо не ошибаюсь.
if GetLocalPlayer() == whichPlayer then
call DialogSetMessage(whichDialog, message)
endif
Если использовать локальную строку, то лучше создавать массив хранящий в себе строки, который должны показываться у игрока.
if GetLocalPlayer() == whichPlayer then
set s = message
else
set s = strData[ GetPlayerId( GetLocalPlayer() ) ]
endif
А если оставить тот метод со строкой, то есть шанс, что у другого пропадёт просто надпись-сообщение:
Если этот использовать.
if GetLocalPlayer() == whichPlayer then
set s = message
endif
И есть ли быстрый способ синхронизации (глобализации) данных в выпуске рефордж?
---@param whichTrigger trigger
---@param whichPlayer player
---@param prefix string
---@param fromServer boolean
---@return event
function BlzTriggerRegisterPlayerSyncEvent(whichTrigger, whichPlayer, prefix, fromServer) end -- (native)
---@param prefix string
---@param data string
---@return boolean
function BlzSendSyncData(prefix, data) end -- (native)
---@return string
function BlzGetTriggerSyncPrefix() end -- (native)
---@return string
function BlzGetTriggerSyncData() end -- (native)
Спасибо всем, отбой, все нормально с позиционными звуками, у меня была включена кинематика и оказывается она игнорирует позиционные звуки... извините за беспокойство, на счет звука на точке не знаю, но на юните работает как надо.
Это особенность патча 1.30, на 1.26 всё нормально с этим. Может быть попробовать поменять приоритет кампании в файле priority, в статье про mix-архив это подробнее описано.
Georgy12, call CreateFogModifierRectBJ( true, игрок, FOG_OF_WAR_VISIBLE, область)
call CreateFogModifierRectBJ( true, игрок, FOG_OF_WAR_VISIBLE, область) вот так
либо
local fogmodifier loc = CreateFogModifierRect(whichPlayer, whichFogState, r, true, false)
call FogModifierStart(loc)
ты установил Player(3) значит это 4 игрок а ты в тест карту запускает 1 игрок пойми!!!
чтобы все игроки видел облость надо циклом от 0 до 11
Понял в чем был косяк, ни одна из функций модификации видимости не имела эффекта, потому что перед ней был следующий вызов модификации тумана с параментром true:
8gabriel8, стандартные порталы как раз включаются триггером, так же триггерно им можно назначать области телепорта, так же они не ломают карту путей.
Насчет упираются в здание, карту путей ставь от портала, физ размер в 0.
Модификатор видимости???. Можно попробовать поработать с нормалями (обратить или усреднить или отрегулировать вручную в mdlvis) Или заглянуть в свойства материалов (w3me).
Все должно действовать, постоянно именно так и делаю. Триггер в студию.
P. S. Только одна оговорка: на всякий случай будет лучше, если способность, даваемая даммику, заранее будет присутствовать у какого-нибудь юнита на карте (можно нейтрального и/или не способного её скастануть), иначе иногда не исключены ситуации, когда даммик просто не кастует добавленную ему способность вообще (зависимость определить не удалось, абсолютно в одной и той же уже сохраненной и оптимизированной карте может кастовать, а может не кастовать - если не стал кастовать эту абилу в первый раз, то и всю игру - т. е. весь конкретный запуск конкретно этой карты - уже не станет, но добавлением абилы заранее нейтральному зданию, т. е. прелоадом, лечится надёжно).
При конвертации моделей из игр в MDX их вес велик как и вес их текстур ! Я оптимизирую и сжимаю модель через MDLvis а текстуры через BLP Laboratory но их вес все еще внушителен ( Есть ли другие варианты среза веса без дефектов материала ?
Нет. Только удаление лишних анимаций. Остальную оптимизацию веса сделает mdlvis.
При импорте некоторых моделей в карту возникает проблема с их выбором при манипуляции ( Передвижения ) словно их Выбор отсутствует , Думаю некоторые с подобным сталкивались ...
Если модель нельзя выделить в игре курсором, у неё отсутствуют collision shapes (формы коллизии). Их можно добавить в War3ModelEditor -> Окна -> Редактор узлов -> правый клик -> Создать форму - > отредактировать размеры и положение. Их можно добавить несколько, чтобы покрыть модель целиком. Они отвечают за взаимодействие модели с курсором.
Один ресурс - один вопрос, после пойдут замечания.
Не берите вы эти ульты для основы своих скиллов, они сделаны через одно место лиж бы работали в капмании, а там дальше хоть потоп.
Сделайте заклинание из канала, а юнитов вокруг делайте неуязвимыми.
Эффекты стакаются в одном регионе (и даже чуть дальше него) крайне сложным образом, и зависит их совместимость от равкода. Я, когда писал погоду для морлоков с этим сталкивался, и возможно описывал проблему... лет 10 назад) Лечится импортом своей таблицы с погодой и подборкой равкодов. Ну и как вариант для более сильного дождя например можно вместо попытки добавить 2 эффекта и той-же таблице просто прописать побольше частиц.
Вон сколько бот ответов выдал хороших, сделай свою карту нормальную без переделок каких либо заброшек
и Ты потом не сможешь её редактировать нормально без знаний JASS. обратно триггеры тебе уже не увидеть точно, возможно придётся даже писать код в блокноте
Тем более это зомби в деревне xgm.guru/p/ziv, автор xgm.guru/user/Fakov был в сети Активность: 01.04.19 01:47
quq_CCCP, тогда ну нафиг
это полноценный реверс инженеринг уже будет Asaaaaaar, короче это потребует кучу времени и никто тут этим заниматься скорее всего не будет
думаю даже за платно сложно будет найти того кто согласится убить кучу времени на это
Нельзя. Потому что даже в твоей сугубо триггерной карте, когда запускается команда на исполнение все конвертируется в jass/( Когда ты играешь или проверяешь карту)
Триггер . лишь графическая оболочка, как бы кубики на которых написаны буквы, но все-равно все происходит на jasse ( уже иногда на lua)
Короче нельзя. скачивай jngp и учи хотя бы простые джассовые команды.
Хотя даже зная его взломанная карта часто выкладывает огромный набор проограмного кода без разделения где конкретный текстовый триггер инициализации или определенного дейсвтия.
но все делается ручками и никак иначе, данные РО еще можно восстановить, но код/триггеры в "первозданном" виде ты уже не восстановишь, только если вручную
Берем основную модель, возможно, вообще без мяса, только с гусеницами, но с кучей точек крепления. Также берем кучу моделей-аттачметов, представляющих собой эти самые пушки, корпуса и все прочее. При выборе характеристик модели через диалог или интерфейс соответственно создаем на основной модели эффекты-аттачменты, будет собрана техника. Такие штуки, как двигатель и прочие невидные извне элементы будут скорее входить в математическую модель юнита, но это также можно запилить. Название танка - сразу не скажу, есть ли триггер на смену, но на таблице рекордов можно отобразить что угодно.
2.Тоже можно.
Создаем погодный в определенной местности и делаем два триггера для контроля входа-выхода юнитов из нее. На искомых юнитов применяем нужные способности - и все готово.
Здесь чуть сложнее: нужно постоянно проверять тип местности под юнитом, но тоже можно. Проверка на ограждения тоже может бить сделана.
4.Это уже интереснее. Видел раньше подобное в играх. При каждой атаке юнита случайным образом наносим или не наносим доп. урон, эффект горения, кидаем спелл на цель в зависимости от теоретического места попадания атаки.
5.И это можно. Но нужно писать нестандартную систему Альянса. Но через триггеры и JASS все можно...
Продажа техники - лучше через способность, что бы кидать ее на понравившегося юнита, не стоит покупать кота в мешке. Стоимость должна зависеть от технического уровня юнита, его текущего состояния (мертвый танк попадет вам бесплатно, сами чините!), если он был модернизован дополнительно, то это тоже входит в стоимость. Разрешение на продажу делаем аналогично.
Это легко через Custom Value и переменние.
Как ты понял, все что ты предложил создать можно, но на это нужно потрать хороший кусок времени. Остается пожелать тебе удачи над созданием проекта - мне идея уже нравится.
Рассмотрим на примере модельки простого огра, у него есть анимация атаки slam и удар дубиной по земле
Старт атаки
Создаём упреждающий в области впереди героя (маркер, ну эффект ауры например), чтобы игрокам было понятно что скоро тут что-то произойдёт
Проигрываем анимацию "attack slam" или нужную другую, для замаха дубиной, если надо больше и не хватает стандартной скосроти, замедляем скорость анимации
Визуально подгадываем или упытным путём определяем время касания дубиной полна от 1 до 4 сек, на ваше усмотрение
Запускаем новый разовый таймер с нужным периодом, и как таймер сработает, создаём спец эффект, и наносим урон юнитам в области эффекта
(это самый простейший способ, хоть на гуи можно сделать)
когда же ты прочтёшь статьи
ибо это одно и тоже
юзай что хочешь
разницы нету предлагаю закрывать все его вопросы автоматом ибо они все по основам которые описаны в нескольких базовых статьях
Если в триггере много действий, загружающих память, то лучше не использовать малый период. А если в нём ещё утечки памяти, то рано или поздно лаги сделают игру невозможной.
По сути, и таймер, и периодическое событие запускают действия в определённое время, то есть действуют одинаково. Смотри, что тебе удобнее.
abatyr, у твоих способностей одинаковый id приказа. Нужно создать способность на основе "Канала", дать им разные id приказа, а настоящие способности кастовать даммиками.
Протестировал и сказать что лучше нельзя
ReplaceUnitBJ имеет 4 разных варианта
Добавление абилки "Тёмный" это как бы 5-й вариант замены юнита
Тут зависит от конкретного случая кого и что надо заменить.
Да, если заменять юнита на героя (или наоборот) могут возникнуть неполадки
В варике блокираторы пути 2х2 и 4х4 (маленький и большой). Воздух блочит путь для воздуха, суша для суши, двусторонний для суши и воздуха. Если в одной точке стоят 4 маленьких блокиратора, лучше заменить на один большой блокиратор. А вообще, лучше использовать вариант, который указал quq_CCCP. Там типо с фотошопом надо как-то работать, сетку желательно создать на которой будешь рисовать свой блокиратор пути... Короче на хгм есть где-то статейка, возможно найду
Razor_dex, сконвертируй карту, потом открой в стандартном 1.26 редакторе, удали комментарий Рок Лии\Otome Renge
Для гуи-гигантов это типичная болячка, просто битый комментарий который содержит в себе информацию о нескольких действиях, считай как обычный триггер только отображается как комментарий
Возникает такое скорее всего при копировании
P.S. странно что редакторы до 1.31 не обращают внимания на такой баг
» WarCraft 3 / Карта 1.31 в 1.26
» WarCraft 3 / Не отображается бафф
» Моддинг / Текстуры
» WarCraft 3 / Не стакается
» WarCraft 3 / Локальная переменная
» WarCraft 3 / Как повернуть здание?
» WarCraft 3 / Рабочие
» WarCraft 3 / Отображение текста
» WarCraft 3 / Стаки аур
» WarCraft 3 / Аура замедления
» WarCraft 3 / Путь замены
» WarCraft 3 / Рассинхрон
» IrInA Host Bot / Вопрос
» WarCraft 3 / Редактор звука
» WarCraft 3 / Туман в области
» WarCraft 3 / Модификатор видимости
» WarCraft 3 / Количество триггеров в очереди
» WarCraft 3 / Создание Trackable
» WarCraft 3 / Не могу опубликовать карту
» WarCraft 3 / Конвертация картинки в .mdx
» WarCraft 3 / Странно работает эффект
» WarCraft 3 / Взлом карты
» WarCraft 3 / Реалистичный снаряд
» WarCraft 3 / Что лучше использовать?
» WarCraft 3 / Проблема с редактором 1.26